﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Configuration;

using Office = Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;

namespace TheBullysStore.Models.ModuloVentas.Cita
{
    public class CitaDAO
    {
        //
        // GET: /CitaDAO/

        #region Variables para abrir un excel
        private static object vk_missing = System.Reflection.Missing.Value;
        private static object vk_visible = true;
        private static object vk_false = false;
        private static object vk_true = true;
        private object vk_update_links = 0;
        private object vk_read_only = vk_true;
        private object vk_format = 1;
        private object vk_password = vk_missing;
        private object vk_write_res_password = vk_missing;
        private object vk_ignore_read_only_recommend = vk_true;
        private object vk_origin = vk_missing;
        private object vk_delimiter = vk_missing;
        private object vk_editable = vk_false;
        private object vk_notify = vk_false;
        private object vk_converter = vk_missing;
        private object vk_add_to_mru = vk_false;
        private object vk_local = vk_false;
        private object vk_corrupt_load = vk_false;
        #endregion

        public string RegistrarCita(CitaBean cita)
        {
            string cadena = "1";
            try
            {
                //poner codigo

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;
                cadena = cadena + "2";
                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                cadena = cadena + "3";
                sqlCon.Open();
                cadena = cadena + "4";

                //INSERT INTO Cita
                //           (Descripcion,Lugar,Fecha,Hora,Estado,DuracionEstimada,IdPropiedad,IdPersona,IdVendedor)
                //     VALUES
                //           ('probando ingresar','av. los alcanfores','12-12-2012','3:00',1,5,1,17,10)
                //(cita.Descripcion,cita.Lugar,cita.Fecha,cita.Hora,1,cita.DuracionEstimada,cita.IdPropiedad,cita.IdPersona,cita.IdVendedor)
                //MOdificar para que se incremente el valor del IdVendedor en la tabla vendedor-- SUPUESTAMENTE SE ESTA CONSIDERANDO ENTITY
                string commandString = "INSERT INTO Cita (Descripcion,Lugar,Fecha,Hora,Estado,duracion_estimada,Id_Propiedad,id_persona,id_vendedor) VALUES ('" + cita.Descripcion + "','" + cita.Lugar + "',convert(datetime,'" + cita.Fecha + "',103),'" + cita.Hora + "',1,'" + cita.DuracionEstimada + "'," + cita.IdPropiedad + "," + cita.IdPersona + "," + cita.IdVendedor + ")";
                                                                                                                                                                
                // ('" + consulta.IdPropiedad + "','" + consulta.Descripcion + "','" + consulta.Nro_Documento_cliente_web + "','1')";
                cadena = cadena + "5";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                cadena = cadena + "6";
                sqlCmd.ExecuteNonQuery();
                cadena = cadena + "7";
                sqlCon.Close();
                cadena = cadena + "8";

                //hasta aqui

                cita.conexion = "Bien";
            }
            catch
            {
                cita.conexion = "Falla en Conexion";
            }
            return cita.conexion;
        }

        public string EliminarCita(CitaBean cita)
        {
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "UPDATE cita SET Estado = 0 WHERE Id_Cita = '" + cita.IdCita + "'";
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCmd.ExecuteNonQuery();

                sqlCon.Close();

                cita.conexion = "Bien";
            }
            catch (Exception e)
            {
                String men = e.ToString();
                cita.conexion = men;
            }
            return cita.conexion;
        }

        public string ExportarCita(CitaBean cita)
        {
            //necesario para exportar

            String cadena = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
            String[] a;
            a = cadena.Split(',');
            //String ruta = Application.StartupPath + @"\MiReporte.xlsx";
            String ruta=HttpContext.Current.Server.MapPath("ReporteCita.xlsx");
            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook excelBook = excelApp.Workbooks.Open(ruta, vk_update_links, vk_read_only, vk_format, vk_password,
            vk_write_res_password, vk_ignore_read_only_recommend, vk_origin,
            vk_delimiter, vk_editable, vk_notify, vk_converter, vk_add_to_mru,
            vk_local, vk_corrupt_load);
            Microsoft.Office.Interop.Excel.Worksheet excelWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)excelBook.Worksheets.get_Item(1);

            int fila = 5;

            //fin de lo que se necesita para exportar
            try
            {
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();

                string commandString = "SELECT * FROM Cita where Estado=1 ";

                if (cita.IdPersona > 0)
                {
                    commandString += " and id_persona = " + cita.IdPersona;
                }

                if (!string.IsNullOrEmpty(cita.FechaInicio))
                {
                    commandString += " AND fecha BETWEEN convert(datetime,'" + cita.FechaInicio + "',103)"
                                   + " AND convert(datetime,'" + cita.FechaFin + "',103)";
                }

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                //System.Diagnostics.Debug.WriteLine("--------------------------------------------inicio");

                excelWorksheet.Cells[fila, a[0]] = "IdCita";
                excelWorksheet.Cells[fila, a[1]] = "Descripcion";
                excelWorksheet.Cells[fila, a[2]] = "Lugar";
                excelWorksheet.Cells[fila, a[3]] = "Fecha";
                excelWorksheet.Cells[fila, a[4]] = "Hora";
                excelWorksheet.Cells[fila, a[5]] = "Estado";
                excelWorksheet.Cells[fila, a[6]] = "DuracionEstimada";
                excelWorksheet.Cells[fila, a[7]] = "IdPropiedad";
                excelWorksheet.Cells[fila, a[8]] = "IdPersona";
                excelWorksheet.Cells[fila, a[9]] = "IdVendedor";

                while (dataReader.Read())
                {
                    CitaBean Cita = new CitaBean();
                    //(Descripcion,Lugar,Fecha,Hora,Estado,DuracionEstimada,IdPropiedad,IdPersona,IdVendedor)
                    //('probando ingresar','av. los alcanfores','12-12-2012','3:00',1,5,1,17,10)
                    Cita.IdCita = Convert.ToInt32(dataReader[0]);
                    Cita.Descripcion = Convert.ToString(dataReader[1]);
                    Cita.Lugar = Convert.ToString(dataReader[2]);
                    Cita.Fecha = ((DateTime)dataReader[3]).ToString("dd/MM/yyyy");
                    Cita.Hora = Convert.ToString(dataReader[4]);
                    Cita.Estado = Convert.ToInt32(dataReader[5]);
                    Cita.DuracionEstimada = Convert.ToString(dataReader[6]);

                    Cita.IdPropiedad = Convert.ToInt32(dataReader[7]);
                    Cita.IdPersona = Convert.ToInt32(dataReader[8]);
                    Cita.IdVendedor = Convert.ToInt32(dataReader[9]);
                    // consulta.Nro_Documento = (string)dataReader["Nro_Documento"];

                    fila += 1;

                    excelWorksheet.Cells[fila, a[0]] = Cita.IdCita;
                    excelWorksheet.Cells[fila, a[1]] = Cita.Descripcion;
                    excelWorksheet.Cells[fila, a[2]] = Cita.Lugar;
                    excelWorksheet.Cells[fila, a[3]] = Cita.Fecha;
                    excelWorksheet.Cells[fila, a[4]] = Cita.Hora;
                    excelWorksheet.Cells[fila, a[5]] = Cita.Estado;
                    excelWorksheet.Cells[fila, a[6]] = Cita.DuracionEstimada;
                    excelWorksheet.Cells[fila, a[7]] = Cita.IdPropiedad;
                    excelWorksheet.Cells[fila, a[8]] = Cita.IdPersona;
                    excelWorksheet.Cells[fila, a[9]] = Cita.IdVendedor;

                    //------listaCita.Add(Cita);
                }
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao");
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao " + listaConsulta.Count());
                dataReader.Close();
                sqlCon.Close();
                excelApp.Visible = true;
            }
            catch (Exception e)
            {
                String men = e.ToString();
                cita.conexion = men;
            }
            return cita.conexion;
        }

        public Boolean ExisteCita(int id_tipoDocumento, string nro_documento)// esto es para evaluar la busqueda pero aun no se oca
        {
            return true;//modificar
        }

        public List<CitaBean> ListarCita(CitaBean cita)
        {
            //System.Diagnostics.Debug.WriteLine("-------------------------------------------->" + Nro_Documento_cliente_web);

            try
            {
                List<CitaBean> listaCita = new List<CitaBean>();
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();

                string commandString = "select  cc.Nombres+' '+cc.Apellidos as NombreCliente, tt.* from (select	p.Nombres+' '+p.Apellidos as NombreVendedor,Convert(varchar,c.Fecha,103)  as FechaAtencionCita, c.Hora as HoraPactada, c.Lugar as DireccionEncuentro,c.Descripcion as Detalle,c.id_cliente,c.id_vendedor,c.Estado,c.Id_Cita from Cita c inner join persona p on(c.id_vendedor=p.id_persona)) tt  inner join cliente cc on (tt.id_cliente=cc.id_cliente) where tt.Estado=1 ";
                if (cita.IdCliente > 0)
                {
                    commandString += " and tt.id_cliente = " + cita.IdCliente;
                }

                if (!string.IsNullOrEmpty(cita.FechaInicio))
                {
                    commandString += " AND tt.FechaAtencionCita BETWEEN convert(datetime,'" + cita.FechaInicio + "',103)"
                                   + " AND convert(datetime,'" +cita.FechaFin + "',103)";
                }

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                //System.Diagnostics.Debug.WriteLine("--------------------------------------------inicio");

                while (dataReader.Read())
                {
                    CitaBean Cita = new CitaBean();
                    //(Descripcion,Lugar,Fecha,Hora,Estado,DuracionEstimada,IdPropiedad,IdPersona,IdVendedor)
                    //('probando ingresar','av. los alcanfores','12-12-2012','3:00',1,5,1,17,10)
                    //Cita.IdCita            = Convert.ToInt32(dataReader[0]);
                    //Cita.Descripcion        = Convert.ToString(dataReader[1]);
                    //Cita.Lugar              = Convert.ToString(dataReader[2]);
                    //Cita.Fecha              = ((DateTime)dataReader[3]).ToString("dd/MM/yyyy");
                    //Cita.Hora               = Convert.ToString(dataReader[4]);
                    //Cita.Estado             = Convert.ToInt32(dataReader[5]);
                    //Cita.DuracionEstimada  = Convert.ToString(dataReader[6]);

                    //Cita.IdPropiedad       = Convert.ToInt32(dataReader[7]);
                    //Cita.IdPersona         = Convert.ToInt32(dataReader[8]);
                    //Cita.IdVendedor        = Convert.ToInt32(dataReader[9]);
                    Cita.NombreCliente = Convert.ToString(dataReader[0]);
                    Cita.NombreVendedor = Convert.ToString(dataReader[1]);
                    Cita.FechaAtencionCita = Convert.ToString(dataReader[2]);
                    Cita.HoraPactada = Convert.ToString(dataReader[3]);
                    Cita.DireccionEncuentro = Convert.ToString(dataReader[4]);
                    Cita.Descripcion = Convert.ToString(dataReader[5]);
                    Cita.IdCliente = Convert.ToInt32(dataReader[6]);
                    Cita.IdVendedor = Convert.ToInt32(dataReader[7]);
                    Cita.Estado = Convert.ToInt32(dataReader[8]);
                    Cita.IdCita = Convert.ToInt32(dataReader[9]);
                    // consulta.Nro_Documento = (string)dataReader["Nro_Documento"];
                    

                    listaCita.Add(Cita);
                }
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao");
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao " + listaConsulta.Count());
                dataReader.Close();
                sqlCon.Close();
                return listaCita;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("-------------error----------------------fin consulta dao:" + e.ToString());
                cita.conexion = e.ToString();
                return null;
            }

        }

        public List<CitaBean> ListarCitaMod(CitaBean citaBean)
        {
            List<CitaBean> listaCita = new List<CitaBean>();

            String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

            SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
            sqlCon.Open();

            string commandString0 = "UPDATE cita SET ";//duracion_estimada = '" + citaBean.DuracionEstimada + "',";
            commandString0 = commandString0 + "descripcion = '" + citaBean.Descripcion + "',";
            commandString0 = commandString0 + "Fecha = '" + citaBean.FechaAtencionCita + "',";
            commandString0 = commandString0 + "Hora = '" + citaBean.HoraPactada + "'";
            //commandString0 = commandString0 + "id_persona = " + citaBean.IdPersona + ",";
            //commandString0 = commandString0 + "id_vendedor = " + citaBean.IdVendedor + " ";
            commandString0 = commandString0 + " WHERE Id_cita = " + citaBean.IdCita + "";
            SqlCommand sqlCmd0 = new SqlCommand(commandString0, sqlCon);
            sqlCmd0.ExecuteNonQuery();

            string commandString = "SELECT * FROM cita";
            commandString = commandString + " WHERE Id_cita = '" + citaBean.IdCita + "'";
            SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
            SqlDataReader dataReader = sqlCmd.ExecuteReader();

            while (dataReader.Read())
            {
                CitaBean cita2 = new CitaBean();
                //cliente. = (int)dataReader["idUsuario"];
                cita2.IdCita       = Convert.ToInt32(dataReader[0]);
                cita2.Descripcion   = Convert.ToString(dataReader[1]);
                cita2.Lugar         = Convert.ToString(dataReader[2]);
                cita2.Fecha         = ((DateTime)dataReader[3]).ToString("dd/MM/yyyy");
                cita2.Hora          = Convert.ToString(dataReader[4]);
                cita2.Estado        = Convert.ToInt32(dataReader[5]);
                cita2.DuracionEstimada = Convert.ToString(dataReader[6]);

                cita2.IdPropiedad  = Convert.ToInt32(dataReader[7]);
                cita2.IdPersona    = Convert.ToInt32(dataReader[8]);
                cita2.IdVendedor   = Convert.ToInt32(dataReader[9]);
                //cita2.IdPersona = (string)dataReader["NroDocumentoPersona"];
                //cita2.IdVendedor = (string)dataReader["Nro_Documento_vendedor"];


                listaCita.Add(cita2);
            }
            dataReader.Close();
            sqlCon.Close();

            return listaCita;
        }

        public List<BusquedaPropiedad> ListarCitaPropiedad(string direccion)
        {
            //System.Diagnostics.Debug.WriteLine("-------------------------------------------->" + Nro_Documento_cliente_web);

            try
            {
                List<BusquedaPropiedad> listaCita = new List<BusquedaPropiedad>();
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();
                string commandString = "SELECT * FROM propiedad_en_venta";
                commandString = commandString + " WHERE direccion like '%" + direccion + "%'";

                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                //System.Diagnostics.Debug.WriteLine("--------------------------------------------inicio");

                while (dataReader.Read())
                {
                    BusquedaPropiedad Consulta = new BusquedaPropiedad();
                    Consulta.IdPropiedad = Convert.ToString(dataReader["id_propiedad"]);
                    Consulta.direccion = Convert.ToString(dataReader["direccion"]);
                    Consulta.precio = Convert.ToString(dataReader["precioBase"]);
                    Consulta.area = Convert.ToString(dataReader["areaTotal"]);
                    listaCita.Add(Consulta);
                }
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao");
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao " + listaConsulta.Count());
                dataReader.Close();
                sqlCon.Close();
                return listaCita;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("-------------error----------------------fin consulta dao:" + e.ToString());
                return null;
            }

        }

        public List<BusquedaPersona> ListarCitaPersona(BusquedaPersona cita)
        {
            //System.Diagnostics.Debug.WriteLine("-------------------------------------------->" + Nro_Documento_cliente_web);

            try
            {
                List<BusquedaPersona> listaCita = new List<BusquedaPersona>();
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();
                string commandString = "select * from cliente a where a.estado=1 ";
                if (!string.IsNullOrEmpty(cita.Nombres))
                {
                    commandString = commandString + " and a.Nombres like '%" + cita.Nombres + "%'";
                }
                if (!string.IsNullOrEmpty(cita.Apellidos))
                {
                    commandString = commandString + " and a.Apellidos like '%" + cita.Apellidos + "%'";
                }
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                //System.Diagnostics.Debug.WriteLine("--------------------------------------------inicio");

                while (dataReader.Read())
                {
                    BusquedaPersona Consulta = new BusquedaPersona();
                    //Consulta.IdDistrito = Convert.ToInt32(dataReader[0]);
                    //Consulta.Nombres = Convert.ToString(dataReader[1]);
                    //Consulta.Apellidos = Convert.ToString(dataReader[2]);
                    //Consulta.Direccion = Convert.ToString(dataReader[3]);
                    //Consulta.NroDocumentoPersona = Convert.ToString(dataReader[4]);
                    //Consulta.Telefono = Convert.ToString(dataReader[5]);
                    //Consulta.Estado = Convert.ToInt32(dataReader[6]);
                    //Consulta.Correo = Convert.ToString(dataReader[7]);
                    //Consulta.Genero = Convert.ToString(dataReader[8]);
                    //Consulta.TipoDocumento = Convert.ToString(dataReader[9]);
                    ////Consulta.usuario = Convert.ToString(dataReader[10]);
                    ////Consulta.password = Convert.ToString(dataReader[11]);
                    //Consulta.celular = Convert.ToString(dataReader[12]);
                    //Consulta.IdCargo = Convert.ToInt32(dataReader[13]);
                    //Consulta.IdPersona = Convert.ToInt32(dataReader[14]);
                    Consulta.Dni = Convert.ToString(dataReader[0]);
                    Consulta.Nombres = Convert.ToString(dataReader[1]);
                    Consulta.Apellidos = Convert.ToString(dataReader[2]);
                    Consulta.Correo = Convert.ToString(dataReader[3]);
                    Consulta.Telefono = Convert.ToString(dataReader[4]);
                    Consulta.Estado = Convert.ToString(dataReader[5]);
                    Consulta.IdCliente = Convert.ToString(dataReader[6]);

                    listaCita.Add(Consulta);
                }
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao");
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao " + listaConsulta.Count());
                dataReader.Close();
                sqlCon.Close();
                return listaCita;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("-------------error----------------------fin consulta dao:" + e.ToString());
                return null;
            }

        }

        public List<BusquedaVendedor> ListarCitaVendedor(BusquedaVendedor cita)
        {
            //System.Diagnostics.Debug.WriteLine("-------------------------------------------->" + Nro_Documento_cliente_web);

            try
            {
                List<BusquedaVendedor> listaCita = new List<BusquedaVendedor>();
                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);
                sqlCon.Open();
                string commandString = "select * from persona a inner join cargo b on(a.Id_Cargo=b.Id_Cargo) where a.Id_Cargo=7 ";
                if (!string.IsNullOrEmpty(cita.Nombres))
                {
                    commandString = commandString + " and a.Nombres like '%" + cita.Nombres + "%'";
                }
                if (!string.IsNullOrEmpty(cita.Apellidos))
                {
                    commandString = commandString + " and a.Apellidos like '%" + cita.Apellidos + "%'";
                }
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                SqlDataReader dataReader = sqlCmd.ExecuteReader();

                //System.Diagnostics.Debug.WriteLine("--------------------------------------------inicio");

                while (dataReader.Read())
                {
                    BusquedaVendedor Consulta = new BusquedaVendedor();
                    Consulta.IdDistrito = Convert.ToInt32(dataReader[0]);
                    Consulta.Nombres = Convert.ToString(dataReader[1]);
                    Consulta.Apellidos = Convert.ToString(dataReader[2]);
                    Consulta.Direccion = Convert.ToString(dataReader[3]);
                    Consulta.NroDocumentoPersona = Convert.ToString(dataReader[4]);
                    Consulta.Telefono = Convert.ToString(dataReader[5]);
                    Consulta.Estado = Convert.ToInt32(dataReader[6]);
                    Consulta.Correo = Convert.ToString(dataReader[7]);
                    Consulta.Genero = Convert.ToString(dataReader[8]);
                    Consulta.TipoDocumento = Convert.ToString(dataReader[9]);
                    //Consulta.usuario = Convert.ToString(dataReader[10]);
                    //Consulta.password = Convert.ToString(dataReader[11]);
                    Consulta.celular = Convert.ToString(dataReader[12]);
                    Consulta.IdCargo = Convert.ToInt32(dataReader[13]);
                    Consulta.IdPersona = Convert.ToInt32(dataReader[14]);

                    listaCita.Add(Consulta);
                }
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao");
                //System.Diagnostics.Debug.WriteLine("--------------------------------------------fin consulta dao " + listaConsulta.Count());
                dataReader.Close();
                sqlCon.Close();
                return listaCita;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("-------------error----------------------fin consulta dao:" + e.ToString());
                return null;
            }

        }
    }
}
